// 负责使用uni-app-featch这个第三方请求包的
// 导入
import { createUniFetch } from 'uni-app-fetch'
import { useUserStore } from '@/stores/user.js'

// 配置uni-app-fetc的相关请求和响应参数
// export const uniFetch进行导出 ->在其他页面就可以导入使用uniFetch这个对象了
//
export const uniFetch = createUniFetch({
	loading: { title: '正在加载中...' }, // 请求提示配置
	baseURL: 'https://slwl-api.itheima.net', //配置请求基地址
	intercept: {
		// 请求拦截器
		request(options) {
			// 既然所有的请求都要经过这个方法处理一下，那么就可以在这里统一携带 token 给服务器即可
			// 1. 从 pinia 中获取token
			const store = useUserStore()
			const token = store.token
			// 2. 在 options.header 中存放所有 的请求报文头，直接将token增加到 options.header
			options.header = Object.assign(
				{},
				{ Authorization: token },
				options.header
			)
			return options // 确保请求参数加工之后，能够正常发送请求
		},

		// 响应拦截器
		response(result) {
			// result:就是服务器响应回来的响应报文：响应行、响应头、响应体
			// console.log('响应拦截器：', result)
			// 判断如果服务器的 statusCode为401，则提示用户并跳转至登录页
			if (result.statusCode === 401) {
				uni.utils.toast('登录失败，请重新登录')
				uni.redirectTo({
					url: '/pages/login/index',
				})
			}
			return result.data // result.data表示返回响应体的数据 确保响应参数加工之后，能够正常接收
		},
	},
})
